/* 
 * File:   Builtin.h
 * Author: weeteck
 *
 * Created on 9. listopad 2012, 23:37
 */

#ifndef INTER_H
#define	INTER_H

#define HISTORY_FILENAME  ".xxshell_history"
#define MAX_HISTORY_LEN   1000

const char *const BUILTIN_CMDS[] = {"bg", "cd", "exit", "fg", "help", "history", "jobs", NULL};

class Inter
{
public:

  /**
   * Vestaveny prikaz shellu "exit".
   * Funkce provede potrebne uklidove akce a ukonci shell.
   */
  static void
  exit_shell();

  /**
   * Vestaveny prikaz shellu "cd". Změní pracovní adresář.
   * 
   * @param args Argumenty z prikazove radky.
   * @param nargs Počet argumentu (včetne nazvu prikazu).
   */
  static void
  cd(char * args[], int nargs);

  // zrušeno
  //static void pwd(const int MAX_PROMPT_LEN);

  /**
   * Vestaveny prikaz shellu "bg".
   * Funkce prepne ulohu na pozadi, jako by byla spustena s &.
   * Pokud neni argumentem specifikovano id ulohy, prepne na pozadi ulohu o ktere si shell
   * mysli, ze je aktualni.
   * 
   * @param args  Argumenty z prikazove radky.
   * @param nargs Pocet argumentu (vcetne samotneho prikazu bg).
   */
  static void
  bg(char * args[], int nargs);

  /**
   * Vestaveny prikaz shellu "fg".
   * Funkce prepne ulohu na popredi, jako by byla normalne spustena.
   * Pokud neni argumentem specifikovano id ulohy, prepne na popredi ulohu o ktere si shell
   * mysli, ze je aktualni.
   * 
   * @param args  Argumenty z prikazove radky.
   * @param nargs Pocet argumentu (vcetne samotneho prikazu fg).
   */
  static void
  fg(char * args[], int nargs);

  /**
   * Vestaveny prikaz shellu "jobs".
   * Funkce vypise vsechny spustene ulohy.
   */
  static void
  jobs();

  /**
   * Vestaveny prikaz shellu "history".
   * Funkce vypise polozky ulozene v historii prikazu.
   */
  static void
  history();

  /**
   * Vestaveny prikaz shellu "help".
   * Funkce vypisuje napovedu k jednotlivym prikazum shellu.
   * 
   * @param args  Argumenty z prikazove radky.
   * @param nargs Pocet argumentu (vcetne prikazu help).
   */
  static void
  help(char* args[], int nargs);
};

#endif	/* INTER_H */

